package com.itheima.map_demo.map_test;

import java.util.HashMap;
import java.util.Set;

/*
    需求： 字符串“aababcabcdabcde”
          请统计字符串中每一个字符出现的次数，并按照以下格式输出
          输出结果：
                    a（5）b（4）c（3）d（2）e（1）

    "aaba"  --> a(3)b(1)

    HashMap完成 : 键唯一
    HashMap<Character , Integer> hm : 键存储的是字符 , 值存储的是字符出现的次数  { 'a'=3  , 'b'=1 }

    遍历字符串
    'a'  -> 'a'=1
    'a'  -> 'a'=2
    'b'  -> 'b'=1
    'a'  -> 'a'=3
 */
public class HashMapTest2 {
    public static void main(String[] args) {
        String s = "aababcabcdabcde";

        // HashMap完成 : 键唯一
        // HashMap<Character , Integer> hm : 键存储的是字符 , 值存储的是字符出现的次数
        HashMap<Character, Integer> hm = new HashMap<>();

        // 遍历字符串
        for (int i = 0; i < s.length(); i++) {
            // 根据索引获取字符串中的字符
            char ch = s.charAt(i);

            // 判断Map集合中是否存在键为ch
            if(hm.containsKey(ch)){
                // 包含
                hm.put(ch , hm.get(ch) + 1);
            }else{
                // 不包含
                hm.put(ch , 1);
            }
        }

//        System.out.println(hm);

        // 字符串拼接 : a(3)b(1)
        StringBuilder sb = new StringBuilder(); // {}
        // 遍历Map集合
        Set<Character> set = hm.keySet();
        for (Character key : set) {
            // 根据键找对应的值
            Integer value = hm.get(key);
            sb.append(key).append("(").append(value).append(")");
        }
        System.out.println(sb);// 打印StringBuilder对象中的内容
    }
}
